import UIKit

@available(iOS 7.0, *)
extension QKC where AA :UIPercentDrivenInteractiveTransition {
	/// animators transitionDuration: method was called when the transition started.
    open func duration_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.duration
	}

	/// The last percentComplete value specified by updateInteractiveTransition:
    open func percentComplete_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.percentComplete
	}

	/// transition.
    open func completionSpeed_qk_s(_ completionSpeed:  CGFloat) -> QKC<AA,YY,ZZ, CGFloat>{
		return link(next: completionSpeed).then_QK { $0.value.completionSpeed = completionSpeed }
	}
    open func completionSpeed_qk_g() -> QKC<AA,YY,ZZ, CGFloat>{
		 self +^ self.value.completionSpeed
	}

	/// Note that during the interactive portion of the animation the timing curve is linear.
    open func completionCurve_qk_s(_ completionCurve:  UIView.AnimationCurve) -> QKC<AA,YY,ZZ, UIView.AnimationCurve>{
		return link(next: completionCurve).then_QK { $0.value.completionCurve = completionCurve }
	}
    open func completionCurve_qk_g() -> QKC<AA,YY,ZZ, UIView.AnimationCurve>{
		 self +^ self.value.completionCurve
	}

	/// vend an interruptible animator.
    @available(iOS 10.0, *)
    open func timingCurve_qk_s(_ timingCurve:  UITimingCurveProvider?) -> QKC<AA,YY,ZZ, UITimingCurveProvider?>{
		return link(next: timingCurve).then_QK { $0.value.timingCurve = timingCurve }
	}
    @available(iOS 10.0, *)
    open func timingCurve_qk_g() -> QKC<AA,YY,ZZ, UITimingCurveProvider?>{
		 self +^ self.value.timingCurve
	}

	/// before 10.0.
    @available(iOS 10.0, *)
    open func wantsInteractiveStart_qk_s(_ wantsInteractiveStart:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: wantsInteractiveStart).then_QK { $0.value.wantsInteractiveStart = wantsInteractiveStart }
	}
    @available(iOS 10.0, *)
    open func wantsInteractiveStart_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.wantsInteractiveStart
	}

	/// are executed when a transition moves in and out of an interactive mode.
    @available(iOS 10.0, *)
    open func pause_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.pause()
	}

	// the transition in the forward or reverse directions.
    open func update_qk_f(_ percentComplete: CGFloat) -> QKC<AA,YY,ZZ, CGFloat>{
		 self +^ self.value.update(percentComplete) +^ percentComplete
	}

    open func cancel_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.cancel()
	}

    open func finish_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.finish()
	}

}

